home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1986-04-25 | 5.0 KB | 263 lines |
- 100 REM --PURPOSE
- 102 REM
- 104 REM THIS PROGRAM CALCULATES THE BEGINNING OF DAWN (ASTRONOMICAL,
- 106 REM NAUTICAL, AND CIVIL), SUNRISE, SUNSET, AND THE END OF DUSK
- 108 REM (CIVIL, NAUTICAL, AND ASTRONOMICAL). IT IS ACCURATE TO
- 110 REM WITHIN A MINUTE OR SO DURING THE SECOND HALF OF THE TWENTIETH
- 112 REM CENTURY. ITS PRECISION DEGRADES NEAR THE POLES WHEN THE SUN
- 114 REM REMAINS CLOSE TO THE HORIZON FOR LONG PERIODS OF TIME.
- 116 REM
- 118 REM --INPUTS--
- 120 REM
- 122 REM LAT. : LATTITUDE EXPRESSED IN DEGREES, MINUTES, AND SECONDS
- 124 REM WHERE NORTH IS POSITIVE AND SOUTH IS NEGATIVE. FOR
- 126 REM EXAMPLE, 30.0029 REPRESENTS 30 DEGREES, 00 MINUTES,
- 128 REM 29 SECONDS NORTH LATTITUDE.
- 130 REM
- 132 REM LON. : LONGITUDE EXPRESSED IN DEGREES, MINUTES, AND SECONDS
- 134 REM WHERE WEST IS POSITIVE AND EAST IS NEGATIVE. FOR
- 136 REM EXAMPLE, 90.1108 REPRESENTS 90 DEGREES, 11 MINUTES,
- 138 REM 08 SECONDS WEST LONGITUDE.
- 140 REM
- 142 REM YEAR : ENTER A NUMBER BETWEEN 1951 AND 2000 INCLUSIVE.
- 144 REM
- 146 REM MONTH : ENTER A NUMBER BETWEEN 1 AND 12 INCLUSIVE.
- 148 REM
- 150 REM DAY : ENTER A NUMBER BETWEEN 1 AND 31 INCLUSIVE.
- 152 REM
- 154 REM ZONE : TIME ZONE, I.E., THE TIME IN HOURS AND MINUTES THAT
- 156 REM IS ADDED TO WALL CLOCK TIME TO YIELD UNIVERSAL TIME.
- 158 REM IN THE FORTY-EIGHT CONTIGUOUS UNITED STATES, REFER
- 160 REM TO THE TABLE BELOW.
- 162 REM
- 164 REM STANDARD DAYLIGHT
- 166 REM
- 168 REM EASTERN 5.00 4.00
- 170 REM CENTRAL 6.00 5.00
- 172 REM MOUNTAIN 7.00 6.00
- 174 REM PACIFIC 8.00 7.00
- 176 REM
- 178 REM --OUTPUTS--
- 180 REM
- 182 REM OUTPUTS ARE EXPRESSED IN HOURS AND MINUTES ON A TWENTY-FOUR
- 184 REM HOUR BASIS. FOR EXAMPLE, 6.25 REPRESENTS 6:25 A.M. AND 18.25
- 186 REM REPRESENTS 6:25 P.M.
- 188 REM
- 190 REM THE OUTPUT 0.00 IS A SPECIAL CASE. IT INDICATES THAT THE
- 192 REM PHENOMENON DOES NOT OCCUR ON THE SPECIFIC DATE. FOR EXAMPLE,
- 194 REM THE SUN DOES NOT SET IN MIDSUMMER AT HIGH LATITUDES.
- 196 REM
- 198 REM
- 200 REM - CONSTANTS
- 202 REM
- 204 A=1.5708
- 206 B=3.14159
- 208 C=4.71239
- 210 D=6.28319
- 212 REM
- 214 REM - INPUTS
- 216 REM
- 218 INPUT "LAT. ";Z
- 220 GOSUB 378
- 222 E=Z*0.0174533
- 224 REM
- 226 INPUT "LON. ";Z
- 228 GOSUB 378
- 230 F=Z*0.0174533
- 232 REM
- 234 INPUT "YEAR ";H
- 236 INPUT "MONTH ";I
- 238 INPUT "DAY ";J
- 240 REM
- 242 INPUT "ZONE ";Z
- 244 GOSUB 378
- 246 G=Z*0.261799
- 248 REM
- 250 REM - DAY OF YEAR
- 252 REM
- 254 K=INT((I+9)/12)
- 256 X=H/4
- 258 Y=INT(X)
- 260 Z=X-Y
- 262 IF Z=0 THEN 266
- 264 K=K*2
- 266 H=INT(275*I/9)
- 268 H=H+J-K-30
- 270 REM
- 272 REM - RISING PHENOMENA
- 274 REM
- 276 PRINT " "
- 278 REM
- 280 I=0
- 282 J=A
- 284 GOSUB 404
- 286 REM
- 288 R=-0.309017
- 290 GOSUB 510
- 292 PRINT "A DAWN ";V
- 294 REM
- 296 R=-0.207912
- 298 GOSUB 510
- 300 PRINT "N DAWN ";V
- 302 REM
- 304 R=-0.104528
- 306 GOSUB 510
- 308 PRINT "C DAWN ";V
- 310 REM
- 312 R=-0.0145439
- 314 GOSUB 510
- 316 PRINT "SUNRIS ";V
- 318 REM
- 320 REM - SETTING PHENOMRNA
- 322 REM
- 324 I=1
- 326 J=C
- 328 GOSUB 404
- 330 REM
- 332 R=-0.0145439
- 334 GOSUB 510
- 336 PRINT "SUNSET ";V
- 338 REM
- 340 R=-0.104528
- 342 GOSUB 510
- 344 PRINT "C DUSK ";V
- 346 REM
- 348 R=-0.207912
- 350 GOSUB 510
- 352 PRINT "N DUSK ";V
- 354 REM
- 356 R=-0.309017
- 358 GOSUB 510
- 360 PRINT "A DUSK ";V
- 362 REM
- 364 PRINT " "
- 366 PRINT "------------"
- 368 PRINT " "
- 370 GOTO 234
- 372 REM
- 374 REM - SEXAGESIMAL TO DECIMAL
- 376 REM
- 378 W=1
- 380 IF Z>=0 THEN 386
- 382 W=-1
- 384 Z=ABS(Z)
- 386 X=INT(Z)
- 388 Z=(Z-X)*100
- 390 Y=INT(Z)
- 392 Z=(Z-Y)*100
- 394 Z=(X+Y/60+Z/3600)*W
- 396 RETURN
- 398 REM
- 400 REM - APPROXIMATE TIME
- 402 REM
- 404 K=H+((J+F)/D)
- 406 REM
- 408 REM - SOLAR MEAN ANOMALY
- 410 REM
- 412 L=K*0.017202
- 414 L=L-0.0574039
- 416 REM
- 418 REM - SOLAR TRUE LONGITUDE
- 420 REM
- 422 Z=SIN(L)
- 424 M=L+0.0334405*Z
- 426 Z=SIN(2*L)
- 428 M=M+0.000349065*Z
- 430 M=M+4.93289
- 432 REM
- 434 REM - QUADRANT DETERMINATION
- 436 REM
- 438 Z=M
- 440 GOSUB 608
- 442 M=Z
- 444 X=M/A
- 446 Y=INT(X)
- 448 Z=X-Y
- 450 IF Z<>0 THEN 454
- 452 M=M+4.847E-06
- 454 N=2
- 456 IF M>C THEN 470
- 458 N=1
- 460 IF M>A THEN 470
- 462 N=0
- 464 REM
- 466 REM - SOLAR RIGHT ASCENSION
- 468 REM
- 470 P=0.91746*TAN(M)
- 472 P=ATN(P)
- 474 REM
- 476 REM - QUADRANT ADJUSTMENT
- 478 REM
- 480 IF N=0 THEN 496
- 482 IF N=2 THEN 488
- 484 P=P+B
- 486 GOTO 496
- 488 P=P+D
- 490 REM
- 492 REM - SOLAR DECLINATION
- 494 REM
- 496 Q=0.39782*SIN(M)
- 498 Q=Q/SQR(-Q*Q+1)
- 500 Q=ATN(Q)
- 502 RETURN
- 504 REM
- 506 REM - COORDINATE CONVERSION
- 508 REM
- 510 S=R-(SIN(Q)*SIN(E))
- 512 S=S/(COS(Q)*COS(E))
- 514 REM
- 516 REM - NULL PHENOMENON
- 518 REM
- 520 Z=ABS(S)
- 522 IF Z<=1 THEN 534
- 524 V=0
- 526 RETURN
- 528 REM
- 530 REM - ADJUSTMENT
- 532 REM
- 534 S=S/SQR(-S*S+1)
- 536 S=-ATN(S)+A
- 538 IF I=1 THEN 548
- 540 S=D-S
- 542 REM
- 544 REM - LOVAL APPARENT TIME
- 546 REM
- 548 Z=0.0172028*K
- 550 T=S+P-Z-1.73364
- 552 REM
- 554 REM - UNIVERSAL TIME
- 556 REM
- 558 U=T+F
- 560 REM
- 562 REM - WALL CLOCK TIME
- 564 REM
- 566 V=U-G
- 568 REM
- 570 REM - DECIMAL TO SEXAGESIMAL
- 572 REM
- 574 Z=V
- 576 GOSUB 608
- 578 Z=Z*3.81972
- 580 V=INT(Z)
- 582 W=(Z-V)*60
- 584 X=INT(W)
- 586 Y=W-X
- 588 IF Y<0.5 THEN 592
- 590 X=X+1
- 592 IF X<60 THEN 598
- 594 V=V+1
- 596 X=0
- 598 V=V+X/100
- 600 RETURN
- 602 REM
- 604 REM - NORMALIZATION
- 606 REM
- 608 IF Z>=0 THEN 614
- 610 Z=Z+D
- 612 GOTO 608
- 614 IF Z<D THEN 620
- 616 Z=Z-D
- 618 GOTO 614
- 620 RETURN
- 622 END
-